package springbootmybatis.demo.dao.common.impl;

public interface Dao {
	/**
	 * 保存
	 * @param statement bean id 标识符  识别 mapper xml 映射文件 中的 bean 的 id 
	 * 例如  usermapper xml 中 命名空间是 usermapper 插入的 bean id 是save 此标识符纪为  usermapper.save
	 * 开发中 只需要传入此 标识符字符串既可以找到相应的 bean
	 * @param parameter 参数对象  
	 * @return Object
	 * @throws Exception
	 */
	public Object save(String statement, Object obj) throws Exception;
	
	/**
	 * 修改
	 * @param statement bean id 标识符
	 * @param parameter 参数对象  
	 * @return Object
	 * @throws Exception
	 */
	public Object update(String statement, Object parameter) throws Exception;
	
	/**
	 * 删除
	 * @param statement bean id 标识符
	 * @param parameter 参数对象  
	 * @return Object
	 * @throws Exception
	 */
	public Object delete(String statement, Object parameter) throws Exception;

	/**
	 * 查找对象
	 * @param statement bean id 标识符
	 * @param parameter 参数对象  
	 * @return Object
	 * @throws Exception
	 */
	public Object findForObject(String statement, Object parameter) throws Exception;

	/**
	 * 查找对象列表
	 * @param statement bean id 标识符
	 * @param parameter 参数对象  
	 * @return Object 
	 * @throws Exception
	 */
	public Object findForList(String statement, Object parameter) throws Exception;
	
	/**
	 * 查找对象封装成 Map 集合
	 * @param statement bean id 标识符
	 * @param parameter 参数对象   
	 * @param mapKey 列表中 每个值对应 的 Key 值
	 * @return Object
	 * @throws Exception
	 */
	public Object findForMap(String statement, Object parameter, String mapKey) throws Exception;
}
